<?php

class SuppliersController extends AppController {

    var $name = 'Suppliers';

    function beforeFilter() {
        parent::beforeFilter();

        //si no es un usuario con nivel = 2 o 1 no lo dejo acceder a las siguientes funciones de este controlador
        if (in_array($this->action, array('index', 'add', 'edit', 'delete', 'view', 'baja', 'down')) and $this->Auth->user('id') and !(in_array($this->Auth->user('level'), array(1,2)))) {
            $this->redirect(array('user' => false, 'controller' => 'articles', 'action' => 'inicio'));
        }
    }

    function index() {
        $this->Supplier->recursive = 0;
        $condicion = array('Supplier.termination_date is NULL');
        $this->paginate['order'] = array('Supplier.name' => 'ASC');
        $suppliers = $this->paginate($condicion); //Anda pero arroja 0 resultados.
        $this->set('suppliers', $suppliers);
    }

    function down() {
        $this->Supplier->recursive = 0;
        $condicion = array('Supplier.termination_date is NOT NULL');
        $this->paginate['order'] = array('Supplier.name' => 'ASC');
        $suppliers = $this->paginate($condicion); //Anda pero arroja 0 resultados.
        $this->set('suppliers', $suppliers);
    }

    function view($id = null) {
        if (!$id) {
            $this->Session->setFlash(__('Proveedor no válido', true));
            $this->redirect(array('action' => 'index'));
        }
        $this->set('supplier', $this->Supplier->read(null, $id));
    }

    function add() {
        if (!empty($this->data)) {
            $this->Supplier->create();
            if ($this->Supplier->save($this->data)) {
//				$this->Session->setFlash(__('El proveedor se ha guardado', true));
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('El proveedor no se pudo guardar. Por favor, inténtelo de nuevo.', true));
            }
        }
    }

    function edit($id = null) {
        if (!$id && empty($this->data)) {
            $this->Session->setFlash(__('Proveedor no válido', true));
            $this->redirect(array('action' => 'index'));
        }
        if (!empty($this->data)) {
            if ($this->Supplier->save($this->data)) {
//				$this->Session->setFlash(__('El proveedor se ha guardado', true));
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('El proveedor no se pudo guardar. Por favor, inténtelo de nuevo.', true));
            }
        }
        if (empty($this->data)) {
            $this->data = $this->Supplier->read(null, $id);
        }
    }

    function baja($id = null) {
        if (!$id && empty($this->data)) {
            $this->Session->setFlash(__('Proveedor no válido', true));
            $this->redirect(array('action' => 'index'));
        }
        if (!empty($this->data)) {
            //ahora vamos a cambiar el formato de la fecha
            //me pongo a armar los campos de las fechas
            $array_datos = $this->data;

            if(!empty($array_datos['Supplier']['termination_date']) and !is_numeric($array_datos['Supplier']['termination_date'])){
                list($d, $m, $a) = explode("/", $array_datos['Supplier']['termination_date']);
                $fecha_aux = $a . "-" . $m . "-" . $d;
                $array_datos['Supplier']['termination_date'] = $fecha_aux;
                $fecha_actual = date('Y-m-d');
                if ($fecha_aux <= $fecha_actual) {
                    $this->Supplier->save($array_datos);
    //				$this->Session->setFlash(__('El proveedor se ha guardado', true));
                    $this->redirect(array('action' => 'index'));
                } else {
                    $this->Session->setFlash(__('El proveedor no se pudo guardar. Verifique que la fecha no sea mayor que la actual.', true));
                }
            }else{
                $this->Session->setFlash(__('El Proveedor no se pudo guardar. Verifique la Fecha de Baja.', true));
            }
        }
        if (empty($this->data)) {
            $this->data = $this->Supplier->read(null, $id);
        }
    }

    function deshacer_baja($id = null) {
        if (!$id) {
            $this->Session->setFlash(__('Identificación del proveedor no válido', true));
            $this->redirect(array('action' => 'down'));
        }

        $aux = $this->Supplier->find('first', array('conditions' => array('Supplier.id' => $id)));
        $aux['Supplier']['termination_date'] = NULL;

        if ($this->Supplier->save($aux)) {
            $this->Session->setFlash(__('El proveedor se encuentra activo ahora', true));
            $this->redirect(array('action' => 'index'));
        }
        $this->set('valor_id', $id);
    }

    function delete($id = null) {
        $purchases = $this->Supplier->query("SELECT COUNT(*) as cantidad FROM purchases WHERE purchases.supplier_id = " . $id . ";");

        if ($purchases[0][0]['cantidad'] == 0) {
            if (!$id) {
                $this->Session->setFlash(__('Identificación del proveedor no válido', true));
                $this->redirect(array('action' => 'index'));
            }
            if ($this->Supplier->delete($id)) {
//			$this->Session->setFlash(__('Proveedor eliminado', true));
                $this->redirect(array('action' => 'index'));
            }
            $this->Session->setFlash(__('Proveedor no eliminado', true));
            $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash(__('No se puede eliminar porque esta asociado con alguna compra.', true));
            $this->redirect(array('action' => 'index'));
        }
    }

}
